package com.hw.one.dam2.util;

/**
 * 天气数据相关 计算工具
 * 
 * @author alicke
 *
 */
public class WeatherUtil {

	/**
	 * 风速（米/秒） 转换 风力（xx级）
	 * 
	 * 例如 ：
	 * 
	 * 0.0-0.2 --------- 0级
	 * 
	 * 0.3-1.5 --------- 1级
	 * 
	 * 1.6-3.3 --------- 2级
	 * 
	 * 3.4-5.4 --------- 3级
	 * 
	 * 5.5-7.9 --------- 4级
	 * 
	 * 8.0-10.7 --------- 5级
	 * 
	 * 10.8-13.8 --------- 6级
	 * 
	 * 13.9-17.1 --------- 7级
	 * 
	 * 17.2-20.7 --------- 8级
	 * 
	 * 20.8-24.4 --------- 9级
	 * 
	 * 24.5-28.4 --------- 10级
	 * 
	 * 28.5-32.6 --------- 11级
	 * 
	 * 32.7-36.9 --------- 12级
	 * 
	 * @return
	 */
	public static String changeWindSpeedToPower(String windSpeed) {

		if (null == windSpeed || "".equals(windSpeed) || "null".equals(windSpeed)) {
			return "-";
		}

		// 如果传入的不是数字，则返回传入的参数值
		if (!MathCalculateUtil.isNumeric(windSpeed)) {
			return windSpeed;
		}

		double speed = Double.parseDouble(windSpeed);
		
		if(speed >=0 && speed < 0.3){
			return "0级";
		}
		if(speed >=0.3 && speed < 1.6){
			return "1级";
		}
		if(speed >=1.6 && speed < 3.4){
			return "2级";
		}
		if(speed >=3.4 && speed < 5.5){
			return "3级";
		}
		if(speed >=5.5 && speed < 8.0){
			return "4级";
		}
		if(speed >=8.0 && speed < 10.8){
			return "5级";
		}
		if(speed >=10.8 && speed < 13.9){
			return "6级";
		}
		if(speed >=13.9 && speed < 17.2){
			return "7级";
		}
		if(speed >=17.2 && speed < 20.8){
			return "8级";
		}
		if(speed >=20.8 && speed < 24.5){
			return "9级";
		}
		if(speed >=24.5 && speed < 28.5){
			return "10级";
		}
		if(speed >=28.5 && speed < 32.7){
			return "11级";
		}
		if(speed >=32.7 && speed < 37.0){
			return "12级";
		}
		
		if(speed >= 37.0){
			return "超12级";
		}
		
		return "";
	}
	/**
	 * 风速（米/秒） 转换 风力（xx级）
	 *
	 * 例如 ：
	 *
	 * 0.0-0.2 --------- 0级
	 *
	 * 0.3-1.5 --------- 1级
	 *
	 * 1.6-3.3 --------- 2级
	 *
	 * 3.4-5.4 --------- 3级
	 *
	 * 5.5-7.9 --------- 4级
	 *
	 * 8.0-10.7 --------- 5级
	 *
	 * 10.8-13.8 --------- 6级
	 *
	 * 13.9-17.1 --------- 7级
	 *
	 * 17.2-20.7 --------- 8级
	 *
	 * 20.8-24.4 --------- 9级
	 *
	 * 24.5-28.4 --------- 10级
	 *
	 * 28.5-32.6 --------- 11级
	 *
	 * 32.7-36.9 --------- 12级
	 *
	 * @return
	 */
	public static String changeWindSpeedToPowerNoCN(String windSpeed) {

		if (null == windSpeed || "".equals(windSpeed) || "null".equals(windSpeed)) {
			return "-";
		}

		// 如果传入的不是数字，则返回传入的参数值
		if (!MathCalculateUtil.isNumeric(windSpeed)) {
			return windSpeed;
		}

		double speed = Double.parseDouble(windSpeed);

		if(speed >=0 && speed < 0.3){
			return "0";
		}
		if(speed >=0.3 && speed < 1.6){
			return "1";
		}
		if(speed >=1.6 && speed < 3.4){
			return "2";
		}
		if(speed >=3.4 && speed < 5.5){
			return "3";
		}
		if(speed >=5.5 && speed < 8.0){
			return "4";
		}
		if(speed >=8.0 && speed < 10.8){
			return "5";
		}
		if(speed >=10.8 && speed < 13.9){
			return "6";
		}
		if(speed >=13.9 && speed < 17.2){
			return "7";
		}
		if(speed >=17.2 && speed < 20.8){
			return "8";
		}
		if(speed >=20.8 && speed < 24.5){
			return "9";
		}
		if(speed >=24.5 && speed < 28.5){
			return "10";
		}
		if(speed >=28.5 && speed < 32.7){
			return "11";
		}
		if(speed >=32.7 && speed < 37.0){
			return "12";
		}

		if(speed >= 37.0){
			return "12";
		}

		return "";
	}

	/**
	 * 把角度 转换为 风向
	 * 
	 * 0度、360度 -------- 北风
	 * 
	 * 0 < 角度 < 90 ----- 东北风
	 * 
	 * 90度 -------------- 东风
	 * 
	 * 90 < 角度 < 180 --- 东南风
	 * 
	 * 180度 ------------- 南风
	 * 
	 * 180 < 角度 < 270 -- 西南风
	 * 
	 * 270度 ------------- 西风
	 * 
	 * 270 < 角度 < 360 -- 西北风
	 * 
	 * @return
	 */
	public static String changeAngleToWindDirection(String angle) {

		if (null == angle || "".equals(angle) || "null".equals(angle)) {
			return "-";
		}

		// 如果传入的不是数字，则返回传入的参数值
		if (!MathCalculateUtil.isNumeric(angle)) {
			return angle;
		}

		// 转化为数字
		double angle_D = Double.parseDouble(angle);

		if (0 == angle_D) {
			return "北风";
		}

		if (90 == angle_D) {
			return "东风";
		}

		if (180 == angle_D) {
			return "南风";
		}

		if (270 == angle_D) {
			return "西风";
		}

		if (angle_D > 0 && angle_D < 90) {
			return "东北风";
		}

		if (angle_D > 90 && angle_D < 180) {
			return "东南风";
		}

		if (angle_D > 180 && angle_D < 270) {
			return "西南风";
		}

		if (angle_D > 270 && angle_D < 360) {
			return "西北风";
		}

		return "";
	}

	public static String changeAngleToWindDirectionByCn(String angle) {

		if (null == angle || "".equals(angle) || "null".equals(angle)) {
			return "-";
		}

		if ("北风".equals(angle)) {
			return "N";
		}

		if ("东风".equals(angle)) {
			return "E";
		}

		if ("南风".equals(angle)) {
			return "S";
		}

		if ("西风".equals(angle)) {
			return "W";
		}

		if ("东北风".equals(angle)) {
			return "NE";
		}

		if ("东南风".equals(angle)) {
			return "SE";
		}

		if ("西南风".equals(angle)) {
			return "SW";
		}

		if ("西北风".equals(angle)) {
			return "NW";
		}

		return "";
	}

	/**
	 * 把角度 转换为 风向
	 *
	 * 0度、360度 -------- 北风
	 *
	 * 0 < 角度 < 90 ----- 东北风
	 *
	 * 90度 -------------- 东风
	 *
	 * 90 < 角度 < 180 --- 东南风
	 *
	 * 180度 ------------- 南风
	 *
	 * 180 < 角度 < 270 -- 西南风
	 *
	 * 270度 ------------- 西风
	 *
	 * 270 < 角度 < 360 -- 西北风
	 *
	 * @return
	 */
	public static String changeAngleToWindDirectionWithEng(String angle) {

		if (null == angle || "".equals(angle) || "null".equals(angle)) {
			return "-";
		}

		// 如果传入的不是数字，则返回传入的参数值
		if (!MathCalculateUtil.isNumeric(angle)) {
			return angle;
		}

		// 转化为数字
		double angle_D = Double.parseDouble(angle);

		if (0 == angle_D) {
			return "N";
		}

		if (90 == angle_D) {
			return "E";
		}

		if (180 == angle_D) {
			return "S";
		}

		if (270 == angle_D) {
			return "W";
		}

		if (angle_D > 0 && angle_D < 90) {
			return "NE";
		}

		if (angle_D > 90 && angle_D < 180) {
			return "SE";
		}

		if (angle_D > 180 && angle_D < 270) {
			return "SW";
		}

		if (angle_D > 270 && angle_D < 360) {
			return "NW";
		}

		return "-";
	}

	public static void main(String[] args) {

	}
}
